package com.sky.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * 1. 当前包名: com.sky.properties    存放与配置属性相关的类
 * 2. 当前类名: AliOssProperties    阿里云 OSS 配置类
 */

/**
 * AliOssProperties; 用于读取和封装阿里云 OSS（对象存储服务）相关的配置信息。
 * 该类通过 Spring Boot 的 `@ConfigurationProperties` 注解，将配置文件中的属性值绑定到类的字段中。
 */
@Component
/**
 * @Component:
 * 该注解将类标识为 Spring 管理的一个组件，使得它可以被自动扫描并实例化，进而加入到 Spring 的应用上下文中。通常，@Component 会在类级别使用。
 */
@ConfigurationProperties(prefix = "sky.alioss")
/**
 * @ConfigurationProperties:
 * 这是 Spring Boot 提供的一个注解，用来将外部配置文件中的属性（通常在 application.properties 或 application.yml 中定义）绑定到 Java 类的字段上。
 * prefix = "sky.alioss" 表示 Spring Boot 会查找以 sky.alioss 为前缀的配置项并将其绑定到 AliOssProperties 类中的字段。比如 sky.alioss.endpoint 会被映射到 endpoint 字段。
 */
@Data
/**
 * @Data:
 * 该注解是 Lombok 库提供的，自动为类生成常用方法（如 getter、setter、toString()、equals()、hashCode() 等）。通过 @Data，你可以减少大量样板代码，提高代码简洁度。
 */
public class AliOssProperties {

    private String endpoint; // 阿里云 OSS 的 endpoint 配置，通常为阿里云提供的 OSS 服务域名
    private String accessKeyId; // 阿里云 OSS 的 accessKeyId，用于身份认证
    private String accessKeySecret;// 阿里云 OSS 的 accessKeySecret，用于身份认证
    private String bucketName; // 阿里云 OSS 存储桶名称

}
/**
 * 仿写： AliSmsProperties; 用于读取和封装阿里云短信服务相关的配置信息。
 *public class AliSmsProperties {
 *     // 短信服务的 endpoint 配置
 *     private String endpoint;
 *     // 阿里云短信的 accessKeyId
 *     private String accessKeyId
 *     // 阿里云短信的 accessKeySecret
 *     private String accessKeySecret;
 *     // 短信服务的签名
 *     private String signName;
 *     // 短信模板 ID
 *     private String templateCode;
 * }
 */